The front three engaged in a thrilling scrap for the lead that saw Norris fall from first to third in a single corner.
An opportunistic move from Piastri saw him follow Verstappen through at Turn 4, making the move on his McLaren team-mate stick around the outside into Turn 5.
The trio then held those places to the flag, Verstappen winning comfortably from Piastri and Norris.
The initial start was aborted, the field sent around for a further formation lap, reducing the race length to 22 laps.
The delay was for the positioning of photographers standing in a dangerous place behind the barrier a Turn 1.
When the race finally began, Verstappen jumped into the lead from Norris with Piastri maintaining third.
The Red Bull Racing driver was clear by the time the pack reached Turn 3 while Piastri forced his to team-mate to go defensive.
Carlos Sainz had a good opening lap, clearing both Mercedes to sit fourth with George Russell fifth ahead of Lewis Hamilton and the fast-starting Charles Leclerc who’d climbed from 10th.
DRS was enabled at the start of Lap 2, the leading eight runners all in range of the car ahead to enjoy the benefit.
Verstappen was quickly under attack, defending into Turn 4 from Norris on Lap 3, Piastri also well in the fight but unable to complete the move there.
Next time around, Norris drew alongside but had his path again blocked by the race leader.
A dive from the McLaren at Turn 3 on Lap 5 seized the lead, Verstappen returning fire at Turn 4 in a move that opened the door for Piastri to follow him through.
It saw Norris move from second to first and then third in the space of two corners.
The order ran Verstappen from Piastri and Norris with Sainz fourth, closely followed by the two Mercedes.
Following that squabble the gap between the front three began to expand as Sainz and the Mercedes engaged in battle.
Russell took fourth into Turn 4 on Lap 8 before Hamilton latched on to the back of the man he’ll replace at Ferrari next season.
After 10 laps, Verstappen had moved out of DRS range, with Norris 1.5s off the back of Piastri.
With the Australian managing his tyres he came under pressure from his team-mate, who clawed his way back into DRS range.
Piastri remained composed as he circulated without feeling the need to go defensive despite the pressure he was under.
The Aussie maintained the place, finishing second behind Verstappen and ahead of Norris.
Russell was fourth from Sainz, who resisted Hamilton, with Leclerc and Sergio Perez rounding out the points-paying positions.
Daniel Ricciardo move up one place on to his grid spot, finishing 15th as his RB team-mate Yuki Tsunoda reaching the flag in 13th.